═══ 1. Introduction ═══ Piano is an Presentation Manager application (for OS/2 2.x) that turns your computer into a MIDI controller. In other words, it allows you to play notes on external MIDI sound modules from your computer via a MIDI Interface. If you have a sound card with a built-in sound module that is triggered via MIDI notes (such as a Turtle Beach MultiSound or Roland RAP-10, SCC-1, or other such cards, with appropriate OS/2 driver), then you can play those as well. Piano also allows you to generate many other types of MIDI data such as Volume, Pan, Reverb Level, Chorus Level, Pitch Wheel, Modulation Wheel, AfterTouch (Key Pressure), and Channel Pressure so that if your MIDI sound module supports these codes, you can control the module appropriately. Some of the words in this manual are highlighted in bold text, such as Program Change. These are words that refer to controls (ie, buttons, sliders, checkboxes) which you manipulate in the Piano window. Other words are in colored text such as Channel Pressure. These refer to MIDI messages (ie, data). Underlined words, such as Pitch Wheel, refer to hardware, such as if I was referring to the Pitch Wheel on your MIDI unit. Words that are in colored text such as Read This are meant to be emphasized. Words in italics refer to aspects of OS/2. This is version 1.1 copyright 1994 by Jeff Glatt. ═══ 2. Driver Requirements and Setup ═══ Piano requires that your MIDI interface or Sound Card has an OS/2 driver. Information sent to this driver via DosWrite() must be interpreted as MIDI data. (It would have to be a rather strange driver if it didn't interpret data in this way, but if you're using a sound card with WAVE playback in addition to a MIDI interface, it's conceivable that the Sound Card might interpret DosWrite() data to be WAVE data). You must also know your driver's internal name (which might be different than the filename of the driver). Often, this is the driver filename minus the .SYS extension. For example, I use a Roland RAP-10 audio card which has an MPU-401 compatible MIDI interface built into it. There is a shareware OS/2 driver available for the MPU-401 by the following manufacturer: Delta Music Systems 2615 Ginghamsburg-Frederick Rd. Tipp City, OH 45371 This driver's internal name is MPU401. It properly interprets DosWrite() data as MIDI data, and ships it out of any MPU-401 compatible interface. So, you can use this driver with Piano, and any card that has an MPU-401 compatible interface (in hardware, not just a software driver simulation). By default, Piano will use that driver, and so you don't have to supply it with that name. If you want Piano to use a different driver, then you must supply the name of the driver to Piano. If you run piano from an OS/2 Command Prompt, then simply type the name of your driver as an argument. If you run Piano from a Desktop icon, open up the Settings menu for that program. In the Parameters field, type the name of your driver. Now whenever you run Piano from the Desktop, it will use that driver. Note: Remember to omit the .SYS extension from the driver name. If Piano can't open the specified driver, it will display an error dialog box. At this point, the program will run, but it won't really do anything. If not using the Delta Music Systems driver, then specify the /N switch after the driver name. This will cause Piano to skip some MPU-401 initialization code for that driver. For example, to use a driver called "RAP10", skipping initialization. Piano RAP10 /N ═══ 3. MultiTimbral Modules ═══ Some MIDI modules are "multi-timbral". These means that the module can listen to all 16 MIDI channels, and play any 16 of its "patches" simultaneously, with each of the 16 patches set to a different MIDI channel. It's as if the module had 16 smaller modules inside of it, with each being able to play a patch on its own MIDI channel. So is there a name for these 16 "sub-modules" inside of your MIDI module? Well, different manufacturers refer to them in different ways, and I'm going to use the Roland preference, a Part. A Roland multi-timbral module has 16 Parts inside of it, and each usually has its own settings for such things as Volume, Panning, Reverb and Chorus levels, Brightness, and its MIDI channel (ie, which MIDI data the Part "plays"). Furthermore, each Part has its own way of reacting to MIDI data such as Channel Pressure (often used to adjust volume or brightness), MOD Wheel controller (often used for a vibrato effect), and Pitch Wheel (used to slide the pitch up and down). For example, one Part can cause its patch to sound brighter when it receives Channel Pressure messages that increase in value. On the other hand, another Part could make its volume increase when it receives increasing Channel Pressure messages. These Parts are completely independent of each other. Just because one Part is receiving a Pitch Wheel message and bending its pitch doesn't mean that another Part has to do the same. ═══ 4. General MIDI Standard ═══ Nowadays, most MIDI modules have specific Patches setup in a specific order according to a standard known as General MIDI (or GM). All this means is that on every GM module, a Piano patch must be the very first patch. Patch #49 must be a Flute. Patch #25 must be a Nylon String Guitar. There are 128 defined patches that a GM module must have, in the proper order. The chart, GM Patches, shows you the names of all Patches, and their respective Program Numbers. Furthermore, all patches must sound a middle C when receiving a MIDI note number of 60. This corresponds to setting the QWERTY octave to 6 and pressing the z key. If the GM module also has a built-in "drum module" (ie, usually one of 16 Parts), then each of that Drum Part's MIDI notes triggers a different drum sound. The assignments of drum sounds to MIDI notes is shown in the chart, GM Drum Sounds. The Drum Part is usually set to receive MIDI data on channel 10. ═══ 5. Piano Window ═══ When run, Piano opens a Presentation Manager window that has a number of controls that you can operate to do 2 things: 1. Setup how the QWERTY keyboard operates. These controls don't change settings on your MIDI modules, but rather, affect how your computer controls those modules. In other words, if your computer was a real MIDI controller, it would need some means of setting itself to a particular MIDI channel(s), and perhaps offer features such as being able to transpose its "piano keyboard" (if it were a keyboard controller), etc. These controls setup the controller, rather than the external modules that are slaved to the controller. 2. Directly generate MIDI events with sliders, buttons, and the QWERTY keyboard. These MIDI events are what control and change settings on the external modules. You exit Piano by selecting Close from its System Menu, or double-clicking on the window upper left corner icon. ═══ 5.1. QWERTY Keyboard ═══ The QWERTY keyboard is just the bottom 2 rows of your computer keyboard, which are setup as if they were the black and white keys on a piano keyboard. The z key corresponds to a C note. Therefore, the x key next to it would correspond to a D note. You'll note that the s key is above and inbetween the z and x keys. As you might expect, this would be a D# key. This physical piano keyboard extends all of the way up to the / key which represents a high E. In other words, it has an octave and a third range. When you press down one of these keys, it sends a MIDI Note On message to your MIDI interface on each of the MIDI channels that you have selected. The net result is that it will play this one note on each sound module that is assigned to one of those selected MIDI channels. Note: By default, the QWERTY keyboard is set to output MIDI data on only MIDI Channel 1. If your external module allows you to set its MIDI channel, make sure that it is set to the same channel as the QWERTY keyboard (or vice versa). You can even press down several keys simultaneously and play a chord. For example, press the z, c, and b keys simultaneously to hear a C Major chord. When you release the keys, the QWERTY keyboard sends the appropriate Note Off messages to your MIDI interface on each of the selected MIDI channels. You'll notice that there is a picture of a piano keyboard in the QWERTY window. You can move the mouse pointer over one of the keys on this graphical piano, and click the mouse button 1 to sound that note (ie, in lieu of using the computer keyboard). When you release the mouse button, the note stops playing. (ie, A Note Off is sent). There is a checkbox for each of the 16 MIDI Channels. Make sure that a channel's box is checked if you want the QWERTY keyboard to output upon that channel. You can check as many of those channels as desired, and the QWERTY keyboard will broadcast its notes on all of those channels simultaneously. Because the QWERTY keyboard is "multi-channel", it allows you to play any combination of sound modules (set to various MIDI channels), at any time. So, you could use the QWERTY keyboard to play your MIDI modules or check the setup of those modules. Note: You must have at least one channel selected in order for any MIDI messages to be sent. By default, the z key is middle C, but you can change the octave that the QWERTY keyboard plays within by using the Octave spin button. Click on either the up or down arrows to increment/decrement the octave, or click into the text field, type the desired octave (1 to 10), and press ENTER. If you ever get any "stuck" notes, use the All Notes Off button to turn them off. If you really get into big trouble with stuck notes, and out of sync controllers, click on the Reset button. By default, MIDI Note On messages are sent with a velocity of 127 (ie, the highest possible velocity). Generally, velocity is used to set the volume on a per note basis, although some modules can use velocity for other effects such as attack time of a voltage controlled generator (VCA). Now, your computer keyboard does not generate velocity information (which is how fast you press and release the keys). Piano allows you to set the QWERTY keyboard to one of 12 preset velocity ranges. The 12 Function keys represent those 12 levels, with function key 12 being full velocity (ie, 127). So, you can change the velocity while you're playing by pressing the function keys. Note: OS/2 uses function keys 1 and 10 for its own use. The mouse buttons 2 and 3 simulate a Hold Pedal, and send MIDI Hold Controller messages. When you push the button down (and hold it down), the hold pedal is on. When you release the button, the hold pedal is also released. ═══ 5.2. MIDI Sliders ═══ As mentioned, Piano generates MIDI Note On and Note Off messages on the selected MIDI channels when you play the QWERTY keyboard. Virtually all MIDI modules respond to these messages. But, there are many more types of MIDI messages that Piano can generate and send to your MIDI module. The sliders on the left side of the window generate some of these different types of MIDI messages. Note: Not all MIDI sound modules respond to all of these types of MIDI messages. In particular, old and very cheap equipment may not respond to any of these messages. If you get a response to the QWERTY keyboard (ie, the MIDI module makes some sound), but a particular slider doesn't seem to be having any effect, then you're probably dealing with such limited equipment. On the other hand, sophisticated gear often allows you to turn on/off the module's response to these types of messages, so check your unit's setup. You operate a slider by "grabbing" its knob with mouse button 1 and moving it to a new position. You have to "let go" (ie, release the mouse button) before Piano sends out any MIDI message (and you perhaps hear the result on your MIDI sound module). Alternately, if you want to increment/decrement the knob's position, move the mouse pointer inside of the slider's shaft, but not on top of the knob itself (ie, to either side of the knob), and click the mouse button 1 once. If you're to the left of the knob, it will increment by 1 position, and a MIDI message will be sent. If you're to the right of the knob, it will decrement by 1 position, and a MIDI message will be sent. Note: Each slider has a small arrow above it. (The arrow may be in different positions on different sliders). This arrow marks the default position of the slider. If you want to quickly set the slider to this default position, click on that arrow, and the knob will move to that position, and send out an appropriate MIDI message. This is very handy for such things as Pan and Pitch since the default is to center the Pan and Pitch wheel. Note that when Piano is first started or when you change the MIDI channel checkboxes, the settings shown for the sliders may not reflect the actual state of your external MIDI modules. You could click on each default arrow in order to send those settings to your module. You can hold down a key on the QWERTY keyboard to sound a note on your external module. Then, without releasing the key (ie, so that the note on the external module is still sounding), you can operate a slider. If your external unit responds to such a MIDI message while sounding a note, then you will hear the result on the currently sounding note. In fact, that's really how AfterTouch and Channel Pressure are meant to be applied. Some modules won't make changes to any already sounding notes, so you'll have to release the note and play it again in order to hear the results of moving a slider. You don't have to be playing a note when you move a slider. You can simply move the slider, and then play a note to hear the result. It's just that moving a slider while listening to a note sounding can give you a much clearer sonic idea of what that slider is doing to the sound (assuming that your module responds to the slider's MIDI messages). Note: Remember that if you "grab and move" the slider's knob with the mouse, you must eventually "let go" of the knob in order for Piano to send any MIDI message. Some modules use AfterTouch and Channel Pressure to affect the Brightness of the sound (ie, Filter cutoff), or Volume, or some other such parameter. Normally, AfterTouch and Channel Pressure are generated by pressing harder and softer on the piano keyboard while you're holding down a note. Obviously, your computer's keyboard doesn't generate AfterTouch and Channel Pressure. If you press down harder, you'll only break it. So, when you release notes after having adjusted the AfterTouch or Pressure sliders, you may wish to click on the respective default arrow to turn the effect off (which is what would happen as you released the keys on a real controller). If you're adjusting the AfterTouch slider, you should only play one note at a time, and reset AfterTouch to default upon releasing each note, since AfterTouch only works on the last key that you've played. The Reset button also resets AfterTouch and Channel Pressure if your MIDI module understands a MIDI All Controllers Off message. ═══ 5.3. Controls ═══ What follows is a description of the controls in the Piano window; what they control, and additional notes about any MIDI information that they send. ═══ 5.3.1. Program Change ═══ Affects Which one of its Patches, Presets, or Instruments the MIDI module will play. If the module is a MultiTimbral unit, then it usually can play 16 "Parts" at once, each receiving data upon its own MIDI channel. This changes all Parts which are set to one of the selected MIDI channels to use that one chosen GM Patch. Note: If a module's Part receives a Program Change message on the channel to which it is assigned, then its Patch will change to the program number embedded in that message. For example, assume that a Part is set to MIDI channel 1, and its Patch is set to Grand Piano. If a Program Change message with a program number of 41 is sent on MIDI channel 1, then the Part will switch to the Violin (ie, which is GM Patch #41). A Program Change can be sent while the Part is playing -- even while the Part is playing some Grand Piano notes. The Part will simply play subsequent MIDI notes using the new Patch. Range One of the 128 GM Patches. You pick out which one from the list box. ═══ 5.3.2. Pan ═══ Affects Where within the stereo field the module will be placed. If the module is a MultiTimbral unit, then each one of its Parts usually has its own pan position. This changes the pan of all Parts assigned to one of the selected MIDI channels. Note: If the Part receives a Pan Controller message on the channel to which it is assigned, then its pan will change to the value embedded in that message. For example, assume that a Part is set to MIDI channel 1, and is panned hard left. If a Pan Controller message with a value of 64 (ie, center) is sent on MIDI channel 1, then the Part's sound will switch to center position. A Pan Controller can be sent while the Part is playing -- even while the Part is playing some notes. The Part will simply play with a new pan position. Range 128 possible positions, with 0 being hard left, 64 being center, and 127 being hard right. You must center the slider's knob for center pan (ie, where the default arrow is), and moving the knob to the left or right pans in those directions respectively. ═══ 5.3.3. Reverb ═══ Affects The reverb amount (ie, level) for the module. If the module is a MultiTimbral unit, then each one of its Parts usually has its own reverb level. This changes the reverb level of all Parts assigned to one of the selected MIDI channels. Note: If the Part receives a MIDI Reverb Controller message on the channel to which it is assigned, then its Reverb Level will change to the value embedded in that message. For example, assume that a Part is set to MIDI channel 1, and has a Reverb Level of 64. If a Reverb Controller message with a value of 0 is sent on MIDI channel 1, then the Part will switch to having no reverb (ie, reverb level=0). A Reverb Controller can be sent while the Part is playing -- even while the Part is playing some notes. The Part will simply play with a new reverb level. Range 0 to 127, with 0 being no reverb applied at all. Moving the fader all the way to the left gives a reverb level of 0. ═══ 5.3.4. Chorus ═══ Affects The chorus effect amount (ie, level) for the module. If the module is a MultiTimbral unit, then each one of its Parts usually has its own chorus level. This changes the chorus level of all Parts assigned to one of the selected MIDI channels. Note: If the Part receives a Chorus Controller message on the channel to which it is assigned, then its Chorus Level will change to the value embedded in that message. For example, assume that a Part is set to MIDI channel 1, and has a Chorus Level of 64. If a Chorus Controller message with a value of 0 is sent on MIDI channel 1, then the Part will switch to having no chorus (ie, chorus level=0). A Chorus Controller can be sent while the Part is playing -- even while the Part is playing some notes. The Part will simply play with a new chorus effect level. Range 0 to 127, with 0 being no chorus effect applied at all. Moving the fader all the way to the left gives a chorus level of 0. ═══ 5.3.5. Volume ═══ Affects The MIDI module's volume. If the module is a MultiTimbral unit, then each one of its Parts usually has its own volume. This changes the volumes of all Parts assigned to one of the selected MIDI channels. Note: If a Part receives a Volume Controller message on the channel to which it is assigned, then its Volume will change to the value embedded in that message. For example, assume that a Part is set to MIDI channel 1, and has a Volume of 127. If a Volume Controller message with a value of 64 is sent on MIDI channel 1, then the Part's volume will drop by half. A Volume Controller can be sent while the Part is playing -- even while the Part is playing some notes. The Part will simply play with a new Volume. Range 0 to 127, with 0 being no volume at all. Moving the fader all the way to the left gives a volume of 0. ═══ 5.3.6. MOD Wheel ═══ Affects Sends MOD Wheel messages to the MIDI module. If the module is a MultiTimbral unit, then each one of its Parts may respond differently (or not at all) to MOD Wheel. This sends a MOD Wheel message to all Parts assigned to one of the selected MIDI channels. Note: If a Part receives a MOD Wheel Controller message on the channel to which it is assigned, then it may or may not do something depending upon how the Part is set to respond to this message. Usually, MOD Wheel introduces some sort of vibrato effect. For example, assume that a Part is set to MIDI channel 1. If a MOD Wheel Controller message with a value of 64 is sent on MIDI channel 1, then a medium vibrato effect may be applied to the Part's sound. A MOD Wheel Controller can be sent while the Part is playing -- even while the Part is playing some notes. A vibrato effect will simply be applied to any sounding notes. Range 0 to 127, with 0 being no modulation. ═══ 5.3.7. Pitch Wheel ═══ Affects Sends Pitch Wheel messages to the MIDI module. If the module is a MultiTimbral unit, then each one of its Parts may or may not respond to Pitch Wheel. This sends a Pitch Wheel message to all Parts assigned to one of the selected MIDI channels. Note: If a Part receives a Pitch Wheel message on the channel to which it is assigned, then it may or may shift its pitch up/down depending upon whether the Part is set to respond to this message. A value of 64 (MSB only) is centered pitch, and values below that shift the pitch downward, whereas values above shift the pitch upward. For example, assume that a Part is set to MIDI channel 1. If a Pitch Wheel message with a value of 95 (MSB only) is sent on MIDI channel 1, then the pitch shifts upward. A Pitch Wheel can be sent while the Part is playing -- even while the Part is playing some notes. The pitch will simply shift accordingly. Range 0 to 127, with 64 being no pitch shift (ie, center position). Note: Piano only sends the MSB of Pitch Wheel. ═══ 5.3.8. Pressure ═══ Affects Sends Channel Pressure messages to the MIDI module. If the module is a MultiTimbral unit, then each one of its Parts may respond differently (or not at all) to Channel Pressure. This sends a Channel Pressure message to all Parts assigned to one of the selected MIDI channels. Note: If a Part receives a Channel Pressure message on the channel to which it is assigned, then it may or may not do something depending upon how the Part is set to respond to this message. Usually, Channel Pressure adjusts the brightness (ie, filter cutoff), the volume, and/or introduces some sort of vibrato effect. For example, assume that a Part is set to MIDI channel 1. If a Channel Pressure message with a value of 64 is sent on MIDI channel 1, then a medium vibrato effect may be applied to the Part's sound. Channel Pressure can be sent while the Part is playing -- even while the Part is playing some notes. Some effect will simply be applied to any sounding notes. Indeed, Channel Pressure is usually generated by pressing harder or softer on the keys while holding them down (ie, so you are playing some notes). So, Channel Pressure is meant to affect sounding notes in some way. Range 0 to 127, with 0 being no channel pressure (ie, off). ═══ 5.3.9. AfterTouch ═══ Affects Sends AfterTouch messages (sometimes referred to as Key Pressure) to the MIDI module. If the module is a MultiTimbral unit, then each one of its Parts may respond differently (or not at all) to these messages. This sends an AfterTouch message to all Parts assigned to one of the selected MIDI channels. Note: If a Part receives an AfterTouch message on the channel to which it is assigned, then it may or may not do something depending upon how the Part is set to respond to this message. Usually, AfterTouch adjusts the brightness (ie, filter cutoff), the volume, and/or introduces some sort of vibrato effect. For example, assume that a Part is set to MIDI channel 1. If an AfterTouch message with a value of 64 is sent on MIDI channel 1, then a medium vibrato effect may be applied one of the Part's sounding notes. AfterTouch can be sent while the Part is playing -- even while the Part is playing some notes. Some effect will simply be applied to the note corresponding to the message. Indeed, AfterTouch is usually generated by pressing harder or softer on a key while holding it down (ie, so you are playing a note). So, AfterTouch is meant to affect a sounding note in some way. What's the difference between AfterTouch and Channel Pressure? Well, AfterTouch messages are for individual keys. Every key that you press down generates its own AfterTouch messages. If you press on one key harder than another, then the one key will generate AfterTouch messages with higher values than the other key. The net result is that some effect will be applied to the one key more than the other key. You have individual control over each key that you play. With Channel Pressure, one message is sent out for the entire keyboard. So, if you press one key harder than another, the module will average out the difference, and then just pretend that you're pressing both keys with the exact same pressure. The net result is that some effect gets applied to all sounding keys evenly. You don't have individual control per each key. A controller would use either Channel Pressure or AfterTouch, but usually not both. Most MIDI controllers don't generate AfterTouch because the circuitry required is a bit too costly. Piano's QWERTY keyboard is no exception. (Hey, you got it free. What do you expect?). It only generates AfterTouch messages for the last key that you play. If you play a chord, only one of the notes gets the AfterTouch effect when you move the slider (ie, the last one that you pressed down). Ideally, there should be AfterTouch messages happening for each key being held down, but that's irrelevant here because your computer keyboard doesn't have some way of detecting pressure for each key, and it would be impractical to be adjusting an AfterTouch slider for every key that you hold down. You should avoid playing chords while adjusting the AfterTouch slider. If you do, you may need to Reset in order to clear aftertouch from all of the keys that you played. Range 0 to 127, with 0 being no aftertouch (ie, off). ═══ 6. GM Charts ═══ These charts give information about the 128 Patches and Drum Note Assignments in a GM Sound Module. The GM Patches chart shows the names of all 128 Instruments, and the MIDI Program Change numbers which select those Instruments. The GM Drum Sounds chart shows what drum sounds are assigned to each MIDI note. ═══ 6.1. GM Patches ═══ ╒═══════╤═════════════════╕ ╒═══════╤═════════════════╕ │ PGM # │ Patch Name │ │ PGM # │ Patch Name │ ╞═══╤═══╪═════════════════╡ ╞═══╤═══╪═════════════════╡ │1 │00h│ Acoustic Piano │ │65 │40h│ Soprano Sax │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │2 │01h│ Bright Piano │ │66 │41h│ Alto Sax │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │3 │02h│ Electric Grand │ │67 │42h│ Tenor Sax │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │4 │03h│ Honky Tonk │ │68 │43h│ Baritone Sax │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │5 │04h│ Elec. Piano 1 │ │69 │44h│ Oboe │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │6 │05h│ Elec. Piano 2 │ │70 │45h│ English Horn │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │7 │06h│ Harpsichord │ │71 │46h│ Bassoon │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │8 │07h│ Clavinet │ │72 │47h│ Clarinet │ ╞═══╪═══╪═════════════════╡ ╞═══╪═══╪═════════════════╡ │9 │08h│ Celesta │ │73 │48h│ Piccolo │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │10 │09h│ Glockenspiel │ │74 │49h│ Flute │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │11 │0Ah│ Music Box │ │75 │4Ah│ Recorder │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │12 │0Bh│ Vibraphone │ │76 │4Bh│ Pan Flute │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │13 │0Ch│ Marimba │ │77 │4Ch│ Bottle Blow │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │14 │0Dh│ Xylophone │ │78 │4Dh│ Shakuhachi │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │15 │0Eh│ Tubular Bells │ │79 │4Eh│ Whistle │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │16 │0Fh│ Dulcimer │ │80 │4Fh│ Ocarina │ ╞═══╪═══╪═════════════════╡ ╞═══╪═══╪═════════════════╡ │17 │10h│ Drawbar Organ │ │81 │50h│ Square Wave │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │18 │11h│ Percussive Organ│ │82 │51h│ Sawtooth Wave │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │19 │12h│ Rock Organ │ │83 │52h│ Synth Calliope │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │20 │13h│ Pipe Organ │ │84 │53h│ Chiffer Lead │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │21 │14h│ Reed Organ │ │85 │54h│ Charang │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │22 │15h│ French Accordion│ │86 │55h│ Solo Voice │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │23 │16h│ Harmonica │ │87 │56h│ Saw in 5ths │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │24 │17h│ Tango Accordion │ │88 │57h│ Bass & Lead │ ╞═══╪═══╪═════════════════╡ ╞═══╪═══╪═════════════════╡ │25 │18h│ Nylon Guitar │ │89 │58h│ New Age │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │26 │19h│ Steel Guitar │ │90 │59h│ Warm Pad │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │27 │1Ah│ Jazz Guitar │ │91 │5Ah│ PolySynth │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │28 │1Bh│ Clean Guitar │ │92 │5Bh│ Space Voice │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │29 │1Ch│ Muted Guitar │ │93 │5Ch│ Bowed Glass │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │30 │1Dh│ Overdrive Guitar│ │94 │5Dh│ Metal Pad │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │31 │1Eh│ Distorted Guitar│ │95 │5Eh│ Halo Pad │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │32 │1Fh│ Harmonics Guitar│ │96 │5Fh│ Sweep Pad │ ╞═══╪═══╪═════════════════╡ ╞═══╪═══╪═════════════════╡ │33 │20h│ Acoustic Bass │ │97 │60h│ Ice Rain │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │34 │21h│ Fingered Bass │ │98 │61h│ SoundTrack │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │35 │22h│ Picked Bass │ │99 │62h│ Crystal │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │36 │23h│ Fretless Bass │ │100│63h│ Atmoshpere │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │37 │24h│ Slap Bass 1 │ │101│64h│ Brightness │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │38 │25h│ Slap Bass 2 │ │102│65h│ Goblin │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │39 │26h│ Synth Bass 1 │ │103│66h│ Echo Drops │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │40 │27h│ Synth Bass 2 │ │104│67h│ Star Theme │ ╞═══╪═══╪═════════════════╡ ╞═══╪═══╪═════════════════╡ │41 │28h│ Violin │ │105│68h│ Sitar │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │42 │29h│ Viola │ │106│69h│ Banjo │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │43 │2Ah│ Cello │ │107│6Ah│ Shamisen │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │44 │2Bh│ Contrabass │ │108│6Bh│ Koto │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │45 │2Ch│ Tremolo Strings │ │109│6Ch│ Kalimba │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │46 │2Dh│ Pizzicato Strs │ │110│6Dh│ Bag Pipe │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │47 │2Eh│ Harp │ │111│6Eh│ Fiddle │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │48 │2Fh│ Timpani │ │112│6Fh│ Shannai │ ╞═══╪═══╪═════════════════╡ ╞═══╪═══╪═════════════════╡ │49 │30h│ Strings │ │113│70h│ Tinkle Bell │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │50 │31h│ Slow Strings │ │114│71h│ Agogo │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │51 │32h│ Synth Strings 1 │ │115│72h│ Steel Drums │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │52 │33h│ Synth Strings 2 │ │116│73h│ Woodblock │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │53 │34h│ Choir Aahs │ │117│74h│ Taiko │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │54 │35h│ Choir Oohs │ │118│75h│ Melodic Tom │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │55 │36h│ Synth Voice │ │119│76h│ Synth Drum │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │56 │37h│ Orchestra Hit │ │120│77h│ Reverse Cymbal │ ╞═══╪═══╪═════════════════╡ ╞═══╪═══╪═════════════════╡ │57 │38h│ Trumpet │ │121│78h│ Gtr Fret Noise │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │58 │39h│ Trombone │ │122│79h│ Breath Noise │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │59 │3Ah│ Tuba │ │123│7Ah│ Seashore │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │60 │3Bh│ Muted Trumpet │ │124│7Bh│ Bird │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │61 │3Ch│ French Horn │ │125│7Ch│ Telephone Ring │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │62 │3Dh│ Brass 1 │ │126│7Dh│ Helicopter │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │63 │3Eh│ Synth Brass 1 │ │127│7Eh│ Applause │ ├───┼───┼─────────────────┤ ├───┼───┼─────────────────┤ │64 │3Fh│ Synth Brass 2 │ │128│7Fh│ Gun Shot │ ╘═══╧═══╧═════════════════╛ ╘═══╧═══╧═════════════════╛ PGM # refers to the MIDI Program Change message that causes this Patch to be selected. For example, sending a MIDI Program Change #64 to a Part causes the Synth Brass 2 Patch to be selected for playing that Part's MIDI data. The number with the appended "h" is the hexidecimal equivalent program number, which is the way that some software displays the values in MIDI messages. ═══ 6.2. GM Drum Sounds ═══ Note # Drum Sound ╒═══════╤════════════════╕ │35 B1 │Acoustic Kick │ ├───────┼────────────────┤ │36 C2 │Kick 1 │ │37 C#2 │Side Stick │ │38 D2 │Snare 1 │ │39 D#2 │Hand Clap │ │40 E2 │Snare 2 │ │41 F2 │Low Tom 2 │ │42 F#2 │Closed HiHat │ │43 G2 │Low Tom 1 │ │44 G#2 │Pedal HiHat │ │45 A2 │Mid Tom 2 │ │46 A#2 │Open HiHat │ │47 B2 │Mid Tom 1 │ ├───────┼────────────────┤ │48 C3 │High Tom 2 │ │49 C#3 │Crash Cymbal 1 │ │50 D3 │High Tom 1 │ │51 D#3 │Ride Cymbal 1 │ │52 E3 │Chinese Cym. │ │53 F3 │Ride Bell │ │54 F#3 │Tambourine │ │55 G3 │Splash Cymbal │ │56 G#3 │Cowbell │ │57 A3 │Crash Cymbal 2 │ │58 A#3 │Vibra-slap │ │59 B3 │Ride Cymbal 2 │ ├───────┼────────────────┤ │60 C4 │High Bongo │ │61 C#4 │Low Bongo │ │62 D4 │MuteHi Conga │ │63 D#4 │OpenHi Conga │ │64 E4 │Low Conga │ │65 F4 │High Timbale │ │66 F#4 │Low Timbale │ │67 G4 │High Agogo │ │68 G#4 │Low Agogo │ │69 A4 │Cabasa │ │70 A#4 │Maracas │ │71 B4 │High Whistle │ ├───────┼────────────────┤ │72 C5 │Low Whistle │ │73 C#5 │Short Guiro │ │74 D5 │Long Guiro │ │75 D#5 │Claves │ │76 E5 │Hi WoodBlock │ │77 F5 │Low WoodBlock │ │78 F#5 │Mute Cuica │ │79 G5 │Open Cuica │ │80 G#5 │Mute Triangle │ │81 A5 │Open Triangle │ ╘═══════╧════════════════╛ The QWERTY keyboard counts its octaves from 1. Most MIDI devices count their octaves from -2. What this means is that, to play the Snare 1 sound, which is a D2 (ie, a D note in octave 2), set the QWERTY keyboard to octave 4 (ie, 2 octaves higher than written) and play the x key (ie, a D note).